//
//  Problem1884.swift
//  TestProject
//
//  Created by 毕武侠 on 2021/6/5.
//  Copyright © 2021 zhulong. All rights reserved.
//

import UIKit
/*
 1884. 鸡蛋掉落-两枚鸡蛋
 给你 2 枚相同 的鸡蛋，和一栋从第 1 层到第 n 层共有 n 层楼的建筑。

 已知存在楼层 f ，满足 0 <= f <= n ，任何从 高于 f 的楼层落下的鸡蛋都 会碎 ，从 f 楼层或比它低 的楼层落下的鸡蛋都 不会碎 。

 每次操作，你可以取一枚 没有碎 的鸡蛋并把它从任一楼层 x 扔下（满足 1 <= x <= n）。如果鸡蛋碎了，你就不能再次使用它。如果某枚鸡蛋扔下后没有摔碎，则可以在之后的操作中 重复使用 这枚鸡蛋。

 请你计算并返回要确定 f 确切的值 的 最小操作次数 是多少？

 示例 1：
     输入：n = 2
     输出：2
     解释：我们可以将第一枚鸡蛋从 1 楼扔下，然后将第二枚从 2 楼扔下。
     如果第一枚鸡蛋碎了，可知 f = 0；
     如果第二没鸡蛋碎了，但第一枚没碎，可知 f = 1；
     否则，当两个鸡蛋都没碎时，可知 f = 2。
 示例 2：
     输入：n = 100
     输出：14

 提示：
    1 <= n <= 1000
 */
@objcMembers class Problem1884: NSObject {
    func solution() {
        
    }
    
    /*
     前提：我们要求的是：假设知道了k，想知道k需要花费的最小次数？
     但是我们不知道k啊，但我们知道k的最小值和最大值1和n，有个思路就是我们假设k是0～n的任何一个值，求出每个k的最小次数，
     这样我们知道所有位置的最小次数，因为我们不知道k在哪，我们就取里面的最大值就行
     剩下问题是，我们知道了k的位置（遍历0～n），如何确定最小次数呢？
     
     假如只有一个鸡蛋，那么就没什么办法了，只能让鸡蛋从第一层开始一层一层的试，每层的最少次数就是当前的层 = i
     现在我们有2个鸡蛋，我们就尽量让第一个鸡蛋试错，一旦第一个鸡蛋碎了 第二个鸡蛋只能一层一层的试
     
     动态规划，创建一个数组dp[n], 那么dp[i]就是假设k在i这点，需要花费的最小次数
     
     1 1
     2 2
     3 2
        0 1 2 3
     4 3
        0 1 2 3 4
     */
    func twoEggDrop(_ n: Int) -> Int {
        return 0
    }
}
